pagesfandomcom_ru-20200215-history
Модуль:Не переведено
local getArgs = require('Module:Arguments').getArgs local p = {} local function is_empty(param) return param nil or param '' end local function wikilink(title, text, tooltip, lang) if lang ~= nil and lang ~= 'ru' then title = string.format(':%s:%s', lang, title) end if tooltip ~= nil then if is_empty(text) then text = title end text = tostring( mw.html.create('span') :attr('title', tooltip) :wikitext(text) ) end if not is_empty(text) then title = title .. '|' .. text end return string.format('%s', title) end local function italic(s) return tostring( mw.html.create('span') :css('font-style', 'italic') :wikitext(s) ) end function p.main(frame) local yesno = require('Module:Yesno') local args = getArgs(frame) local languages = mw.loadData('Module:Languages/data') local error = require('Module:Error').error local prepositional = require('Module:Languages')._transform_lang local leave_always = yesno(args'l') local leave_if_redirect = yesno(args'r') local categories = '' local nocat = yesno(args'nocat') local allow_cat = mw.title.getCurrentTitle().namespace 0 and not nocat local orphan_categories = { 'error' = 'Категория:Википедия:Статьи с некорректно заполненным шаблоном Не переведено', 'outdated' = 'Категория:Википедия:Статьи с неактуальным шаблоном Не переведено', 'redirect' = 'Категория:Википедия:Запросы на замену перенаправлений переводами' } if is_empty(args1) and ( is_empty(args'есть') or not args'есть':match('^:a-z-+:') ) then if allow_cat then categories = categories .. orphan_categories'error' end return error{'не указано название статьи'} .. categories end if not is_empty(args'есть') or args1:match('^:a-z-+:') then local temp if is_empty(args'есть') then temp = args1 else temp = args'есть' end args1 = args'надо' or args'нужно' or args2 or '' args2 = args'текст' or args3 args3 = temp:gsub('^:(a-z-+):(.+)$', '%1') args4 = temp:gsub('^:(a-z-+):(.+)$', '%2') if is_empty(args1) then args1 = args4 end end local page_title = mw.title.new(args1) if leave_if_redirect and not page_title.isRedirect then leave_if_redirect = false end local exists = page_title.exists and not ( leave_always or leave_if_redirect ) if leave_if_redirect and allow_cat then categories = categories .. orphan_categories'redirect' end local title = args1 local text = args2 local ru_link = wikilink(title, text) if exists and not mw.isSubsting() then ru_link = tostring( mw.html.create('span') :css('background', '#FFFF00') :wikitext(ru_link) ) end local post_text_list = {} local addition = args'a' local show_originals = yesno(args'o') or addition ~= nil local wikidata_link = '' local i, j = 4, 1 while argsi or args- 1 or i <= 4 do local lang = args- 1 local iw_title = argsi local iw_text = args+ 1 if is_empty(lang) then lang = 'en' end if is_empty(iw_title) then iw_title = title end if is_empty(iw_text) then iw_text = iw_title end local show_original = show_originals and lang ~= 'd' local lang_text local lang_title local lang_link if lang 'd' then lang_text = 'd' elseif languageslang nil then if allow_cat then categories = categories .. orphan_categories'error' end return error{'некорректный ISO-код «' .. lang .. '»'} .. categories else lang_text = languageslang1 lang_title = languageslang2 lang_link = wikilink(lang_title, lang_text) end local tooltip title = mw.getContentLanguage():ucfirst(title) if lang 'd' then tooltip = string.format('Элемент статьи «%s» в Викиданных', title) else tooltip = string.format('Версия статьи «%s» на %s', title, prepositional(lang)) end local iw_link if show_original then iw_link = wikilink(iw_title, iw_text, tooltip, lang) else iw_link = wikilink(iw_title, lang_text, tooltip, lang) end if show_original then if mw.isSubsting() then post_text_listj = string.format(' ', lang, iw_text) elseif exists then post_text_listj = string.format('%s %s', lang_link, italic(iw_text)) else post_text_listj = string.format('%s %s', lang_link, italic(iw_link)) end elseif not ( mw.isSubsting() or exists ) then if lang 'd' then wikidata_link = iw_link else post_text_listj = iw_link end end if show_original then i = i + 3 else i = i + 2 end if lang ~= 'd' then j = j + 1 end end local post_text = '' if not is_empty(addition) then addition = '; ' .. addition else addition = '' end if not is_empty(wikidata_link) and next(post_text_list) ~= nil then wikidata_link = wikidata_link .. '; ' end if next(post_text_list) ~= nil or not is_empty(wikidata_link) then post_text = string.format(' (%s%s%s)', wikidata_link, table.concat(post_text_list, ', '), addition) if not show_originals or ( next(post_text_list) nil and is_empty(addition) ) then post_text = tostring( mw.html.create('span') :addClass('noprint') :css('white-space', 'nowrap') :css('font-size', '85%') :wikitext(post_text) ) end end local exist_message = '' if exists then if allow_cat then categories = categories .. orphan_categories'outdated' end exist_message = tostring( mw.html.create('sup') :addClass('noprint') :wikitext( string.format( '%s', wikilink( 'Шаблон:Не переведено#Действия после появления перевода', italic('убрать шаблон'), 'Пожалуйста, удалите шаблон, заменив «{{не переведено» на «{{подст:не переведено»' ) ) ) ) end local result result = ru_link .. post_text if not mw.isSubsting() then result = result .. exist_message .. categories end return result end return p